تاریخ : چهار شنبه 25 مرداد 1391
نویسنده : hamidrezakhouri

دستور BETWEEN :

همانطور که کلمه IN به ما کمک میکند تا محدوده انتخاب را به یک یا چند مقدار محدود کنیم ، کلمه BETWEEN  کمک میکند تا محدوده را یک بازه تعریف کنیم . در این حال تمام مقادیری که بین value1 و value2 باشند انتخاب میشوند .


SELECT "column_name"
FROM "table_name"
WHERE "column_name" BETWEEN 'value1' AND 'value2'


مثال :فرض کنید جدولی مانند زیر داریم .رکوردهایی که تاریخ آنها بین January 6, 1999  و January 10, 1999 است را میخواهیم .

 

Table Store_Information


store_name

Sales Date

Los Angeles

$1500

Jan-05-1999

San Diego

$250

Jan-07-1999

Los Angeles

$300

Jan-08-1999

Boston

$700

Jan-08-1999










SELECT * FROM Store_Information WHERE Date BETWEEN 'Jan-06-1999' AND 'Jan-10-1999'

نتیجه :

store_name

Sales Date

San Diego

$250

Jan-07-1999

San Francisco

$300

Jan-08-1999

Boston

$700

Jan-08-1999







|
امتیاز مطلب : 20
|
تعداد امتیازدهندگان : 5
|
مجموع امتیاز : 5
موضوعات مرتبط: مقالات SQL SERVER , ,
تاریخ : چهار شنبه 25 مرداد 1391
نویسنده : hamidrezakhouri

هدف این مقاله آشنایی مختصر با حملات ترزیق كد به بانك‌های اطلاعاتی (Sql injection) و روش‌های مقابله با این دسته از حملات در دنیای وب است.

هدف این مقاله آشنایی مختصر با حملات ترزیق كد به بانك‌های اطلاعاتی (Sql injection) و روش‌های مقابله با این دسته از حملات در دنیای وب است.

امروزه یكی از متداول ترین روش‌های نفوذ به وب سایت‌ها و بانك‌های اطلاعاتی حملات تزریق كد است در این گونه حملات شخص نفوذگر یا برنامه‌های نفوذگر كدهای مخرب را از طریق ورودی‌هایی كه برنامه‌های تحت وب می‌گیرند، اجرا می‌كند كه باعث اختلال در سیستم وب سایت‌ها می‌شوند اهداف نفوذگران در این گونه حملات سرقت اطلاعات یا تغییر اطلاعات بانك اطلاعاتی(database) است كه گاهی اوقات این دسترسی تا نفوذ به سرور و دسترسی به كل فایل‌ها و اطلاعات سرور ختم می‌شود كه از این جنبه بسیار خطرناك است.

 این روش هك شایع ترین روش در هك كردن كارت‌های اعتباری و اطلاعات سایت‌ها و بانك‌های اطلاعاتی به شمار می آید.

شایع ترین پایگاه‌های اطلاعات كه با این مساله مواجه می‌شوند شامل Access, Microsoft Sql , MySql , Oracel می‌باشد. حال در ادامه به توضیح مختصری در مورد چگونگی وقوع این نوع حملات و راه‌های مقابله با آن می‌پردازیم.

نفوذگر در این حملات با سوء استفاده از فرم‌هایی كه از طریق كاربر ورودی می‌گیرد، كدهای مخرب خود را به ورودی برنامه تزریق می‌كند و بعد از پردازش بین پایگاه اطلاعات و برنامه تحت وب عملیاتی به عنوان خروجی انجام می‌شود یا اطلاعاتی روی صفحه نمایش داده می‌شود كه نفوذگر بر اساس خروجی، كار خود را پیش می‌برد.

فرم‌های ورود به قسمت مدیریت وب سایت، نمایش اخبار, نمایش مقالات و امثال این گونه فرم‌ها قربانیان این حملات می‌باشند در ادامه یك مورد از این حملات را شرح می دهیم و در نهایت به روش‌های مقابله با این نوع حملات می‌پردازیم.

برای مثال فرم ورود به قسمت مدیریت یك سایت در نظر بگیرید كه شامل دو ورودی نام كاربری و كلمه عبور است و دكمه ارسال كه اطلاعات را به سمت برنامه می‌فرستد، حال نام كاربری مهم نیست و هر چیزی می‌تواند باشد اگر در قسمت كلمه عبور عبارت a" or "t"="t وارد شود باعث می‌شود كه دستوری كه برنامه به پایگاه اطلاعات می‌فرستد دچار انحراف بشود و نتیجه اجرای عملیات درست نباشد و باعث ورود به قسمت مدیریت سایت بشود و شخص نفوذگر به كلیه اطلاعات به راحتی دسترسی داشته باشد البته این یكی از ساده ترین روش‌های تزریق كد به بانك اطلاعاتی است كه البته هنوز هم در بسیاری از فرم‌ها این مشكل وجود دارد و می‌تواند ناشی از كنترل نشدن مقادیر ورودی توسط برنامه‌نویس و وجود مشكل در دستوراتی كه به پایگاه داده ارسال می‌گردد باشد.

حال نوبت روش‌های مقابله با حملات تزریق كد به پایگاه داده (Sql Injection)  است قبل از شروع باید اهمیت این موضوع را درك كنیم كه سایت‌های بسیار معروف و مهمی توسط این روش مورد حمله قرار گرفتند و این امر برنامه‌نویس را بر آن می‌دارد كه مقابله با حملات  تزریق كد را یكی از قسمت‌های مهم كار خود در نظر بگیرد و در تمام فرم‌هایی كه ورودی از كاربر می‌گیرد این مساله را كنترل نماید.

روش‌های مقابله با حملات تزریق به پایگاه اطلاعات‌

یكی از مهم‌ترین روش‌ها جلوگیری از نمایش خطاهای برنامه است كه در صورت به وجود آمدن هرگونه مشكل برای برنامه یا تزریق ورودی‌های مخرب به برنامه سورس برنامه یا اطلاعات پایگاه داده نمایش داده نشود چون بیشتر نفوذگران بر اساس خطاهایی كه برنامه می دهد كار خود را مرحله به مرحله  پیش می‌برند و به اطلاعات بیشتری دستیابی پیدا می‌كنند. این مساله خیلی مهم است كه امیدواریم تمام برنامه‌نویسان رعایت كنند كه در آینده برایشان مشكلی پیش نیاد.

حملات sql injection

مساله بعدی كنترل ورودی‌های برنامه است این مهم‌ترین قسمت مقابله با حملات تزریق كد است. ورودی‌های برنامه بطور كل اطلاعاتی است كه به فرم‌های برنامه پست می‌شود كه ما توسط روش‌های مختلفی می توانیم اطلاعات ورودی را  كنترل كنیم. بهترین لایه, لایه امنیتی سرور است كه كلیه مقادیر پست شده را كنترل كند و مقادیر مخرب را فیلتر كند و قبل از این كه اطلاعات به برنامه پست شود جلوی حملات را بگیرد. البته این روش مقابله به مسائل امنیتی سرور بر می‌گردد كه ممكن است در یك سرور رعایت شود و در یك سرور رعایت نشود كه این امر برنامه‌نویس را مجبور می‌كند كه این لایه امنیتی را در داخل برنامه پیاده سازی كند و كلیه اطلاعات ورودی و پست شده را چك كند و ورودی‌های مخرب را فیلتر نماید.

بیشترین مشكلی كه موجب تزریق كد‌های مخرب به پایگاه اطلاعات می‌شود ورودی‌های متنی هستند كه از طریق url به برنامه ارسال می‌شود تا جای ممكن باید سعی شود برای نمایش اطلاعاتی مثل اخبار, مقالات و مطالبی كه در پایگاه داده ذخیره شده از ورودی‌های عددی استفاده شود تا جلوی تزریق كد گرفته شود و اگر ورودی عددی باشد در برنامه باید كنترل شود كه ورودی مشكلی نداشته باشد و آلوده به كدهای مخرب نباشد این مهم‌ترین مساله است كه  تمام مشكلات تزریق كدهای مخرب به پایگاه اطلاعات ناشی از چك نكردن ورودی‌های آلوده است كه خیلی راحت می‌توان جلوی این نوع حملات را گرفت.

این مساله جای بحث بسیار زیادی دارد كه در مطلب ما نمی گنجد برای بیشتر آشنا شدن با این گونه حملات مطالب موجود در ویکی پدیا  می تواند مفید باشد.


|
امتیاز مطلب : 14
|
تعداد امتیازدهندگان : 4
|
مجموع امتیاز : 4
موضوعات مرتبط: مقالات SQL SERVER , ,
تاریخ : چهار شنبه 25 مرداد 1391
نویسنده : hamidrezakhouri

عرضه شدن نسخه ۲۰۰۵ پایگاه داده‌ای مشهور مایكروسافت یعنی SQLServer، بازار نرم‌افزارهای بانك اطلاعاتی را به شدت تحت تأثیر خود قرار داد. امكانات گسترده‌ای كه در این نسخه جدید تعبیه شده، طراحی و پیاده‌سازی بانك‌های اطلاعاتی را سرعت بخشیده و تلفیق و انطباق آن با انواع فناوری‌های نو مانند XML وADO.NET، باعث افزایش قدرت و كارایی آن شده است. در این مقاله به برخی از ویژگی‌های جدید این برنامه نگاهی خواهیم داشت.

Snapshot Isolation Level

یكی از روش‌هایی كه به انواع متدهای قفل كردن ردیف‌های یك جدول بانك‌اطلاعاتی در نسخه جدید اضافه شده است، شیوه تصویربرداری از ركورد است. در روش‌های قبلی، اگر یك یا چند ركورد بانك اطلاعاتی توسط دستور BeginTrans كه شروع یك فرآیند را مشخص می‌كند در شرف تغییر یا حذف قرار می‌گرفتند، تا مادامی‌ كه فرآیند مذكور توسط دستور Commit Trans تأیید یا توسط RollBack منتفی نشود، از هیچ جا و برنامه‌ای نمی‌توان ركوردهای مذكور را حتی با دستور ساده SELECT خواند. اما در روش جدید قفل‌گذاری، در صورت بروز چنین رویدادی سایر كاربران می‌توانند همواره آخرین ارزش ركوردهای مذكور را با این فرض كه هنوز هیچ تغییری در آن‌ها ایجاد نشده است بخوانند و مورد استفاده قرار دهند.

. باز هم دات‌نت

با نسخه جدید SQL Server، برنامه‌نویسان بانك‌های اطلاعاتی قادرند از امكانات و قابلیت‌های موجود در پلتفرم دات‌نت و كلیه توابع و كلاس‌های ساخته شده در آن بهره‌مند شوند. یكی از ابتدایی‌ترین و در عین حال اساسی‌ترین این قابلیت‌ها، امكان استفاده از دو زبان مهم و كاربرپسند دات‌نت یعنی ویژوال بیسیك و سی‌شارپ در پیاده‌سازی اجزای مختلف یك بانك‌اطلاعاتی است. این عامل نه‌تنها باعث می‌شود كه برنامه‌نویسان برای نوشتن ماژول‌هایی مثل تریگرها، روال‌ها (Stored Procedures) در توابع به جای استفاده از زبان استاندارد و در عین حال پیچیده T-SQL ، بتوانند از زبان‌های محیط دات‌نت با تمام ساختارها، دستورات، كلاس‌ها، آرایه‌ها، و خلاصه تمام ویژگی‌های یك زبان شی گرا استفاده كنند، بلكه این همكاری نزدیك بین موتور برنامه‌نویسی دات‌نت یعنی CLR (كه مسؤول تبدیل كدهای نوشته شده دات‌نت به زبان سیستم‌عامل است) و موتور بانك اطلاعاتی SQLServer باعث شده تا به غیر از تنوع زبان‌های برنامه‌نویسی قابل استفاده درSQLServer، تغییر قابل توجهی نیز در كارایی ماژول‌های مذكور پیش آید. در واقع موضوع از این قرار است كه اصولاً كدهای نوشته شده به زبان‌های دات‌نت، ابتدا توسط كامپایلر به زبان (IL) ترجمه می‌شوند. سپس CLR این كد میانی را به كد قابل فهم سیستم‌عامل تبدیل و آماده اجرا می‌نماید. این كار سبب می‌شود تا كدهای نهایی به دلیل این‌كه بسیار به سیستم‌عامل نزدیك می‌باشد سریع‌تر از كدهای TSQL (كه فقط توسط موتور بانك اطلاعاتی قابل اجرا هستند) اجرا شوند و در زمان اجرا از كارایی بیشتری برخوردار باشند. البته این مسأله بدین معنی نیست كه استفاده از زبان‌های دات‌نت همیشه بر زبان‌های SQL ارجحیت دارد، بلكه منظور آن است كه در برخی موارد ممكن است آن قدر منطق و الگوریتم یك ماژول پیچیده باشد كه برنامه‌نویس استفاده از زبان‌های دات‌نت را به دلیل آسان‌تر بودن ساختار و دستورات آن به زبان SQL ترجیح دهد. بنابراین زمانی كه بیشترعملیات یك ماژول مربوط به خواندن و نوشتن اطلاعات باشد بهتر است از همان دستورات استاندارد SQL یعنی SELECT ،UPDATE ،DELETE وINSERT استفاده كرده و بی‌جهت منابع سیستم را صرف تعریف متغیرها و كلاس‌های دات‌نت ننماید. اما در ماژول‌هایی كه بیشتر عملیاتشان شامل پردازش اطلاعات مثل انجام عملیات‌های ریاضی یا مقایسه اطلاعات با یكدیگر است بهتر است تا هم از امكانات برنامه‌نویسی و هم از سرعت و كارایی بالای دات‌نت در این زمینه بهره برد و ماژول‌های مذكور را با زبان‌های دات‌نت پیاده‌سازی كرد.

. ADO .NET وارد می‌شود

طبق یك سنت نه‌چندان قدیمی برنامه‌نویسی در محیط ویندوز، برنامه‌نویسان SQLServer، بانك اطلاعاتی موردنظرشان را برروی سرور و برنامه كاربردی نوشته شده با زبانی مثل ویژوال بیسیك را بر روی كلاینت‌ها قرار می‌دهند. سپس از طریق این برنامه كاربردی و با استفاده از اشیایی از جنس ADO داده‌های موردنیاز خود را از سمت سرور دریافت كرده و یا به آن ارسال می‌كنند. اكنون این ارتباط به لطف نسخه جدید SQLServer و همچنین محیط دات‌نت، با امكانات جدیدADO.NET بسیار كامل‌تر از قبل شده است. این ارتباط جدید با استفاده از مكانیسمی به نام اعلان (Notification) به یك ارتباط دو‌طرفه فعال تبدیل شده به طوری كه ADO.NET قادر است پیغام‌هایی را از سمت پایگاه داده به سمت كلاینت ارسال كند. به عنوان مثال فرض كنید كه شما با استفاده ازADO تعدادی از ركوردهای یك جدول بانك اطلاعاتی را انتخاب كرده و مشغول كار برروی آن‌ها هستید. در همین هنگام كاربر دیگری از طریق كلاینت و ADO خود، ركوردی در محدوده ركوردهای مورد انتخاب شما را تغییر می‌دهد یا حذف می‌كند. در این وقت موتور پایگاه داده با ارسال پیغامی به ADO شما، این مسأله را با استفاده از فراخوانی یك رخداد (Event) شی ADO به اطلاعتان می‌رساند. علاوه براین قابلیت جدید، فناوری جدید دیگری هم با استفاده ازADO.NET به نسخه جدید SQLServer اضافه شده و آن امكان چند پرس‌وجوی همزمان توسط یك شی ADO است. در این شیوه اگر یك شی ADO با استفاده از دستور SELECT مشغول خواندن تعدادی از ركوردهای یك جدول بانك اطلاعاتی باشد، می‌تواند بدون این‌كه منتظر به پایان رسیدن این عملیات شود، تعداد دیگری از ركوردهای یك جدول دیگر بانك اطلاعاتی را بخواند. این قابلیت جدید با نام (Multiple Active Result Set (MARS كه قبلاً فقط در كرسرهای سمت سرور (server side) و آن هم نه با كارایی بالا وجود داشت اكنون در كرسرهای سمت راست كلاینت هم وجود دارد و تفاوت عمده آن با شكل قدیمی هم علاوه بر مورد مذكور، امكان ایجاد چند كرسر در یك شی ADO به صورت همزمان است. SQLServer نسخه ۲۰۰۵ به خوبی از تمام این ویژگی‌ها، پشتیبانی می‌كند.

. تكنولوژی XML

اكنون كه XML به یك استاندارد ارتباطی بین سكوهای مختلف تبدیل شده است، نسخه جدید SQLServer هم از توجه كافی به آن و ایجاد یك انقلاب در ساده‌تر استفاده كردن از آن طفره نرفته است. در نسخه ۲۰۰۰ كاربران قادر بودند تا با استفاده از دستور FOR XML نتیجه یك پرس‌وجوی SELECT از یك بانك اطلاعاتی را به درون یك فایل XML بریزند یا مثلاً با دستور OPEN XML می‌توانستند یك فایل XML را باز كرده و شروع به خواندن دستورات درون آن نمایند. از آن‌جا كه در نسخه جدید SQLServer توجه خاصی به این استاندارد و زبان ارتباطی شده است، یك نوع داده جدید (Data type) به انواع داده‌های قبلی و استاندارد SQL مثل int ، char و امثال آن اضافه شده است. این نوع داده جدید كه XML نام دارد و دارای خصوصیات یك نوع داده موجود در یك محیط شی‌گرا است، دارای متدهای پیشرفته‌ای چون ()nodes() ،Value() ،exist() ،query و ()modify بوده و قادر است انواع پردازش‌های قابل انجام برروی اسناد XML را به راحتی انجام دهد. عملیات جستجو، تغییر، حذف و درج مقادیر موردنظر در داخل یك فایل XML را می‌توان با استفاده از متدهای مذكور و صرفاً با چند خط برنامه‌نویسی انجام داد. همچنین در این نسخه برخلاف نسخه ۲۰۰۰، با استفاده از دستور FOR XML می‌توان یك شیء از جنس XML را بدون ارسال آن به كلاینت، برروی سرور ساخته و از آن نگهداری كرد. با این كار می‌توان جداولی را كه مرتباً مورد رجوع كاربران قرار می‌گیرند هراز گاهی در قالب XML به داخل حافظه آورد و كاربران مذكور به جای رجوع به جداول اصلی در هارددیسك، با استفاده از دستورات ویژه جستجو درXML ، متغیر مذكور را در حافظه سرور مورد جستجو قرار دهند و بدین‌وسیله یك نوع عمل Cache كردن را جهت افزایش سرعت دسترسی به اطلاعات تكراری شبیه‌سازی كنند. در این حالت، كاربران به جای استفاده از دستورSELECT استاندارد می‌توانند از OPEN XML كه در نسخه ۲۰۰۵ قادر است متغیرهای جدید از نوع XML را بخواند استفاده كرده و به سرعت به اطلاعات موردنیاز خود دسترسی پیدا كنند. این قابلیت جدید آن‌قدر در سریع‌تر كردن جستجو در برنامه‌های تحت وب مهم و مؤثر است كه جای هیچ مشكلی را در استفاده از آن باقی نمی‌گذارد.

. سرویس اعلان (Notification)

همان‌طور كه گفتیم سیستم اعلان درSQLServer قادر است پیغام‌هایی را طی زمان‌های مشخص به سمت كاربران بفرستد. مثلاً تصور كنید كه تعدادی كاربر در حال اتصال به یك بانك حاوی اطلاعات مربوط به ارزش سهام در بورس هستند. از آن‌جایی كه ممكن است قیمت سهام هر شركت یا مؤسسه برای تعدادی از كاربران از اهمیت زیادی برخوردار باشد، می‌توان این سیستم را طوری تنظیم كرد تا هرگاه ارزش سهام خاصی كه موردنظر هر كاربر است تغییر كرد، به صورت اتوماتیك به وی اعلام شود. كاربر هم می‌تواند این تغییرات را برروی برنامه كاربردی خود، تلفن همراه (در قالب Windows Messenger ،(SMS و یا ایمیل به‌صورت مرتب دریافت و مشاهده كند.

. سرویس گزارش‌گیری

سرویس جدید تولید گزارش‌های متنوع در نسخه ۲۰۰۵ به یكی از جالب‌ترین و پركاربردترین قابلیت‌های این نسخه تبدیل شده است، وجود یك موتور گزارشگر قوی در سمت سرور و یك ابزار مناسب ساخت گزارش با واسط كاربر عالی، باعث شده تا برنامه‌نویسان بتوانند گزارش‌های موردنظر خود را با كارایی و سرعت مناسب در سمت سرور بسازند به طوری كه این گزارش‌های سمت سرور توسط هر برنامه كاربردی سمت كلاینت در هر پلتفرمی با همان امكانات اتصال به SQLServer قابل مشاهده است.

. بهبودهای ایجاد شده در زبان

در ۲۰۰۵ SQLServer تغییرات بسیار مثبتی در زبان SQL T ایجاد شده است. این تغییرات در زمینه‌های مختلف مثل مدیریت خطاها، جستجوهای بازگشتی (Recursive Query) و حتی در بدنه موتور پایگاه داده‌ها انجام شده و كارایی كلی ذخیره و یا خواندن اطلاعات را به نحو مطلوبی افزایش داده است. به عنوان مثال دردستورات TSQL، دو اپراتور جدید دیده می‌شود، كه PIVOT وUNPIVOT نام دارند. این دو اپراتور كه در قسمت FROM یك پرس‌وجو مورد استفاده قرار می‌گیرند می‌توانند نتیجه یك جستجوی انجام شده توسط دستور SELECT را به جای برگرداندن در قالب ردیف‌ها یا ركوردهای پشت‌سرهم، به صورت ستون‌های مختلف یك یا چند ركورد برگردانند. در این روش یكی از ستون‌های (فیلدهای) یك جستجو به عنوان محور معرفی شده و بقیه ستون‌ها براساس آن به صورت افقی طبقه‌بندی می‌شوند. به یك مثال توجه كنید:

SELECT CUSTOMER ID, order No

FROM orders PIVOT CustomerID

 

Order No Order No Order No Order No Customer ID

- ۴۴۰۰ ۱۱۲۰ ۲۵ ۱

- - - ۳۵۰ ۲

- - ۱۷۸۰ ۴۴۳ ۳

۸۹۸۹ ۲۲۲۲ ۱۹۸۰ ۵۵۵ ۴

. نتیجه جستجوی فوق چیزی شبیه موارد بالا‌ خواهد بود

همان‌طور كه مشاهده می‌كنید با استفاده از اپراتور مذكور، نتیجه پرس‌وجوی انجام شده به این صورت كه هر ردیف به یك شماره مشتری و چندین شماره سفارش مربوطه به آن مشتری در قالب ستون‌های مختلف است، در می‌آید. این همان چیزی است كه سال‌ها درSQLServer وجود نداشت و ابزارهای مختلف گزارش‌سازی مثل CrystalReport آن را با نام Cross Tab به كاربران خود ارایه می‌دادند. در همین رابطه اپراتورUNPIVOT هم عمل عكس اپراتور مذكور را انجام می‌دهد.اپراتور دیگری كه می‌تواند نقش مهمی را در دستورات SQL بازی كند APPLY نام دارد كه در قسمت FROM یك دستور SQL به كار می‌رود. با استفاده از این دستور می‌توان خروجی یك تابع (Function) را با یك یا چند جدول دیگر تركیب (Join) كرد همان‌طور كه می‌دانید در ۲۰۰۵ SQLServer توابع می‌توانند یك یا چند ردیف یك جدول اطلاعاتی را برگردانند كه این خروجی می‌تواند با یك جدول دیگر با استفاده از اپراتور مذكور تركیب شود.

. مدیریت خطا

در نسخه‌های قدیمی SQLServer برای كشف و مدیریت خطا از سیستم Error Handling استفاده می‌شد. این شیوه كشف خطا كه در زبانی مثل ویژوال بیسیك ۶ هم مورد استفاده قرار می‌گرفت با استفاده از دستور GOTO می‌توانست كنترل و خط اجرای روال را از یك محل به محل دیگر و در واقع از محل بروز خطا به محل مدیریت و آشكار كردن (Raise) آن ببرد و بدین‌وسیله پیغام خطایی را به كار نشان دهد. نسخه جدید SQLServer با تأثیر از پلتفرم دات‌نت، از دستورات ویژه كشف و مدیریت خطا با عنوان Exception Handling استفاده می‌كند. این روش با استفاده از دستورات جدید TRY/CATCH شیوه بهتری از مدیریت خطا را به اجرا می‌گذارد. در این روش برخلاف روش قبل، تمام خطاهای اتفاق‌افتادنی مثل خطاهای مربوط به تبدیل داده‌ها به یكدیگر (DataConversion) به خوبی مدیریت شده و از بروز خطاهایی كه منجر به اتمام ناقص عملیات یك روال یا تریگر می‌شود جلوگیری به عمل می‌آید.


|
امتیاز مطلب : 5
|
تعداد امتیازدهندگان : 2
|
مجموع امتیاز : 2
موضوعات مرتبط: مقالات SQL SERVER , ,
تاریخ : چهار شنبه 25 مرداد 1391
نویسنده : hamidrezakhouri

ابزارهایی ارایه شده‌اند که با بکارگیری آنها می توان یک SQL Server امن داشت. ضمناً ابزارهای حمله بسیاری نیز وجود دارند که آشنائی با آنها می‌تواند دید خوبی در رابطه با امنیت SQL Server و جلوگیری از آسیب‌های آن بوجود آورد.

۱. مقدمه

 در دو بخش زیر خلاصه‌ای درباره ی بعضی از ابزارهای حمله و نیز دفاع، ارایه خواهد شد.

۲. ابزارهای حمله

ForceSQL نسخه ۲.۰

این ابزار برای بدست آوردن رمز عبور یک SQL Server استفاده می¬شود. ForceSQL دارای ویژگی¬های زیر است:

▪ کنترل و راهبری آسان آن در خط فرمان

▪ اجرای حمله دیکشنری ۱

▪ اجرای حمله فراگیر ۲

▪ بکارگیری درگاهی به غیر از درگاه ۱۴۳۳

● SQLDict

این ابزار که در سطر فرمان تمامی ویندوزها قابل اجرا است، تدارک یک حمله دیکشنری علیهSQL Server را می دهد. جهت بکارگیری آن باید IP ماشین هدف، شناسه‌ی کاربری که می‌خواهید رمز او را به دست آورید و فایلی که حاوی رمزهای عبور برای چک کردن می باشد را مشخص کنید.

● CPMdeamon

این برنامه که در محیط لینوکس نوشته شده است، یک کد CGI را اجرا می‌کند و اجازه¬ی عوض کردن رمز عبور را از راه دور می دهد.

● SQLScanner.exe

این ابزار که در سطر فرمان ویندوز اجرا می شود، یک محدوده آدرس IPاز نوع کلاس B(XXX.XXX) و نام یک فایل خروجی را به عنوان پارامتر می گیرد، و سپس محدوده را جستجو کرده و IP¬هایی را که دارای Sql Server هستند مشخص می نماید و در فایل خروجی لیست می کند. این ابزار قادر به شناسایی SQL Serverهایی که از درگاه استاندارد ۱۴۳۳ استفاده نمی کنند نیز می باشد.

● SqlPing.exe

این برنامه ی سطر فرمان ویندوز، اطلاعات مفیدی (نظیر نام سِرور، شماره ی نسخه ، شماره ی درگاه و ....) در مورد یک SQL Server نصب شده بر روی یک IP خاص ارائه می دهد.

● NGSSQLCrack

NGSSQLCrack ابزاری است که جهت شکستن رمز عبور در SQL Server ۷ و ۲۰۰۰ بکار گرفته می شود.

۳. ابزارهای دفاع

● SQL Critical Update

SQL Critical Update بسته‌ای نرم‌افزاری است که توسط شرکت مایکروسافت ارائه شده و شامل اجزای زیر است:

▪ SQL Critical Update: که در آن یک وصله ی امنیتی برای نسخه‌هایی از SQL Server ۲۰۰۰ و MSDE ۲۰۰۰ که در برابر کرم Slammer آسیب‌پذیرند قرار داده شده است.

▪ SQL Scan: با استفاده از این ابزار می توان یک کامپیوتر، یک دامنه‌ و یا محدوده‌ای از آدرس ها را برای یافتن یک نسخه ی نصب شده از SQL Server ۲۰۰۰ یا MSDE ۲۰۰۰ که در برابر کرم Slammer آسیب‌پذیر است، کنترل نمود.

▪ SQL Check: با استفاده از این ابزار می توان یک کامپیوتر را برای یافتن نسخه های آسیب‌پذیرSQL Server ۲۰۰۰ یا MSDE ۲۰۰۰ در برابر کرم Slammer، چک کرد.

● (Microsoft Baseline Security Analyzer (MBSA

یک ابزار مجانی ارائه شده از سوی مایکروسافت میباشد که قادر است یک کامپیوتر دارای ویندوز را در برابر وجود پیکربندی‌های اشتباه و یا به روز نبودن نرم‌افزارها بر اساس آخرین بهنگام سازی های امنیتی ارایه شده، چک کند.

● SQLLiteSpeed

SQL LiteSpeed یک نرم‌افزار پیشرفته برای تهیه ی پشتیبان از بانک های اطلاعاتی SQL Server، در قالب فایل های رمزنگاری شده است.

● EnforcePass

بسیاری از حملات بر اساس کشف کلمات عبور ضعیف و قابل حدس انجام می گیرند. این ابزار که در واقع یک تابع است، با توجه به معیارهای زیر، از بکارگیری کلمات عبور ضعیف توسط راهبر SQL Server و کاربران جلوگیری می کند.

کلمه عبور نباید شامل کلمه شناسه ی عبور باشد.

طول کلمه ی عبور باید بیش از شش باشد.

کلمه ی عبور باید شامل حداقل یک حرف، یک رقم و یک کاراکتر از علایم باشد.

این تابع باید درون رویه‌های ذخیره‌شده sp_password و sp_addlogin موجود در SQL Server قرار گیرد.

● AppDetective. for Microsoft SQL Server

این نرم‌افزار یک ابزار برای برآورد کردن میزان امنیت برنامه‌های کاربردی موجود در شبکه ی شماست.

● NGSSQuirreL

NGSSQuirreL یک ابزار بررسی امنیت برنامه‌ است که مخصوص Microsoft SQL Server طراحی شده است.


|
امتیاز مطلب : 4
|
تعداد امتیازدهندگان : 1
|
مجموع امتیاز : 1
موضوعات مرتبط: مقالات SQL SERVER , ,
تاریخ : چهار شنبه 25 مرداد 1391
نویسنده : hamidrezakhouri

انتشار اخبار روزانه از حملات ثبت شده علیه محصولات و سرویس های مایکروسافت، منجر به این باور عمومی گشته که آسیب پذیری محصولات مایکروسافت نسبت به محصولات سایر شرکت ها بیشتر بوده و در مجموع امنیت دغدغه اصلی این شرکت در ارائه محصولات خود محسوب نمی شود.

محصولات مایکروسافت همواره روی لبه حملات امنیتی از جانب نفوذگران قرار داشته اند. انتشار اخبار روزانه از حملات ثبت شده علیه محصولات و سرویس های مایکروسافت، منجر به این باور عمومی گشته که آسیب پذیری محصولات مایکروسافت نسبت به محصولات سایر شرکت ها بیشتر بوده و در مجموع امنیت دغدغه اصلی این شرکت در ارائه محصولات خود محسوب نمی شود. با وجود این، توجه به امنیت یکی از شعارهای اصلی مایکروسافت در انتشار آخرین نسخه SQL Server خود، که Yukon نامیده می شود، بوده است. در این قسمت اهم بهبودهای امنیتی Yukon نسبت به نسخه های قبلی آن را بررسی خواهیم کرد:

سرویس های پیش فرض: نصب پیش فرض Yukon حداقل تعداد سرویس ها و ویژگی های مورد نیاز را فعال نگه می دارد. تعدادی از سرویس ها که بصورت پیش فرض غیرفعال باقی می مانند، عبارتند از:

Microsoft .Net Framework

SQL Server Broker Network Connectivity

HTTP Connectivity in Analysis Services

تفکیک مفهوم مدل و کاربر: در استاندارد ANSI SQL ۹۲ مدل۱ یا Schema بصورت مجموعه ای از اشیای پایگاه داده که به یک کاربر تعلق دارند، تعریف شده است. در نسخه های قبلی SQL Server یک رابطه ضمنی و خیلی نزدیک بین کاربران و schema وجود دارد که در بسیاری از موارد به تمایز مفهوم آنها توجه نمی شود. در SQL ۲۰۰۰ هر کاربر در واقع مالک یک schema است که دارای نامی مشابه نام کاربر است. به همین دلیل به هنگام حذف یک کاربر از پایگاه داده، مجبور به بازنویسی کد در همه ارجاعات مربوط به اشیاءیی که تحت تملک آن کاربر بوده اند، هستیم. ولی در Yukon، با متمایز نمودن صریح مفهوم schema و کاربران، هر کاربر بجای اینکه بصورت مستقیم مالک اشیاء باشد، مالک schema است که در واقع دربرگیرنده اشیاء می باشد. این تمایز علاوه بر تسهیل مدیریت کاربران در Yukon، اعمال کنترل دسترسی کاربران به اشیاء را بصورت دقیقتر امکان پذیر می سازد.

کنترل دسترسی: مکانیزم های کنترل دسترسی و سطح ریزدانگی آن در نسخه جدید SQL Server بهبود یافته است.

تفکیک مفهوم کاربران و مدل که اولین بار در Yukon معرفی شده است، کنترل حقوق را آسان ساخته و پایبندی به اصل "دسترسی به حداقل حقوق" را امکان پذیر می سازد.

با معرفی مفهوم زمینه ۲ برای عباراتی که در یک ماجول اجرا میشوند، ریزدانگی۳ کنترل حقوق افزایش یافته است.

با امکان جدید تعریف سیاستهای بکارگرفته شده در سطح سیستم عامل ویندوز برای ورود به سیستم پایگاه داده، میتوان از اعمال یکنواخت این سیاست ها برای همه کاربران یک دامنه اطمینان حاصل کرد.

کنترل دسترسی در چهار سطح کارگزار، پایگاه داده، مدل و شی قابل تنظیم است.

رمزگذاری داده ها: در Yukon عملیات رمزگذاری داده ها به عنوان یک امکان در داخل پایگاه داده نهاده شده و سرویس زیرساخت مدیریت کلید همراه با پایگاه داده ارائه می شود.

امکان اعمال عملیات بازرسی ۴ روی DDL ها: در نسخه جدید SQL Server اعمال موجود در DDL با تعریف triggerها قابل انجام است.

اعمال محدودیت در IIS از طریق پایگاه داده: به هنگام استقرار Yukon در محیط های سیستم عامل کارگزار ۲۰۰۰ یا ۲۰۰۳ می توان با استفاده از ابزار IIS Lockdown ویژگیهای بلااستفاده و غیرضروری از IIS را که امکان سوء استفاده نفوذگران را فراهم می آورند، غیرفعال نمود.

ایجاد نقش ۵ جدید برای استفاده از SQL Profiler: در Yukon با استفاده از تعریف یک نقش جدید، کاربرانی که از حقوق administrator برخوردار نیستند، می توانند SQL Profiler را اجرا کنند. این ویژگی بهره¬وری تولیدکنندگان نرم افزار را افزایش می دهد.

مستندات راهنمای کاربران: علاوه بر امکانات فوق، Yukon با فراهم آوردن مستندات راهنما، نحوه نصب، اسقرار و مدیریت امن پایگاه داده را بصورت مرحله به مرحله در اختیار کاربران قرار داده است. در این مستندات همچنین روش های آنالیز و ارزیابی پیکربندی موجود از جنبه امنیتی و نیز نمونه پیکربندی های امن به عنوان پیشنهاد ارائه شده است.


|
امتیاز مطلب : 3
|
تعداد امتیازدهندگان : 1
|
مجموع امتیاز : 1
موضوعات مرتبط: مقالات SQL SERVER , ,

صفحه قبل 1 صفحه بعد

آخرین مطالب

/
از این که به وبلاگ من سر زدید خیلی خیلی ممنونم باتشکر حمیدرضاخوری